logo头像
Snippet 博客主题

Flutter app 8.routes 优化

Flutter routes 优化

页面

目前页面

SplashPage
LoginPage
RegisterPage

MainPage
AccountPage

页面跳转

启动app 时候 SplashPage  如果back 
`退出`

SplashPage -> LoginPage  如果back 
`退出`

SplashPage -> LoginPage -> RegisterPage  如果 back 
`LoginPage` 


SplashPage -> LoginPage -> MainPage  如果 back 
`退出` 

app 中有个 home 的根节点 在根节点上 back 就要退出app

启动app 时候 SplashPage  `根节点 SplashPage`

SplashPage -> LoginPage  `根节点 LoginPage`

SplashPage -> LoginPage -> RegisterPage  `根节点 LoginPage`

SplashPage -> LoginPage -> MainPage  `根节点 MainPage`

更改路由线路

通过推送给定路线,然后在新路线完成动画制作后处置前一路线,替换最紧密包围给定上下文的导航器的当前路线。

Navigator.pushReplacementNamed

正常切換

1
Navigator.of(context).pushNamed

or

1
2
3
4
5
6
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => MainPage(),
),
);

路由優化

main.dart

1
2
3
4
5
6
7
8
9
10
void main() {
// debugPaintSizeEnabled = true; //打开视觉调试开关
runApp(
new MaterialApp(
title: 'Snap',
home: SplashPage(), // 闪屏页,
routes: UIData.getRouter(),
),
);
}

UIData

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class UIData {
//routes


static const String homeRoute = "/Home";
static const String splashRoute = "/Splash";
static const String loginRoute = "/Login";
static const String registerRoute = "/Register";
static const String accountRoute = "/Account";

static getRouter() {
return <String, WidgetBuilder>{
// 路由
UIData.splashRoute: (BuildContext context) => SplashPage(),
UIData.loginRoute: (BuildContext context) => LoginPage(),
UIData.registerRoute: (BuildContext context) => RegisterPage(),

UIData.homeRoute: (BuildContext context) => MainPage(),
UIData.accountRoute: (BuildContext context) => AccountPage(),
};
}
}

SplashPage.dart
中 路線切換

跳轉登陸

1
2
Navigator.pop(context);  
Navigator.pushReplacementNamed(context, UIData.loginRoute);

跳轉主頁面

1
2
Navigator.pop(context);
Navigator.pushReplacementNamed(context, UIData.homeRoute);
支付宝打赏 微信打赏

打赏